Change Set

Infrastructure as Codeツールにおいて、実際に変更を適用する前に「何が変わるか」をプレビューする仕組み。

terraform plan(Terraform)やaws cloudformation create-change-set(CloudFormation)がこれに相当する。変更内容を事前に確認してから適用するという、本番環境の安全な運用に不可欠なプラクティスだ。

確認できる情報

「置換」とは、リソースを更新するのではなく削除して再作成する操作を指す。一部のプロパティ変更は置換が必須になる(例:EC2のAMI IDを変更するとインスタンスが置換される)。置換はダウンタイムやデータ損失につながる可能性があるため、事前に把握することが重要だ。

CloudFormationでのChange Set

# Change Setの作成
aws cloudformation create-change-set \
  --stack-name my-stack \
  --template-body file://template.yaml \
  --change-set-name my-changes

# 内容の確認
aws cloudformation describe-change-set \
  --stack-name my-stack \
  --change-set-name my-changes

# 問題なければ実行
aws cloudformation execute-change-set \
  --stack-name my-stack \
  --change-set-name my-changes

Drift-aware Change Sets

従来のChange Setは「前回デプロイしたテンプレート」と「新しいテンプレート」の2者比較だった。2025年に導入されたDrift-aware Change Setsは「新テンプレート」「前回テンプレート」「実際のインフラ状態」の3者を比較する。

ドリフト検出と組み合わせることで、手動変更が加えられた環境でもより正確な変更プレビューが可能になった。

CI/CDパイプラインへの統合

テンプレート変更のPR
  → Change Set自動作成
  → レビュー・承認
  → Change Set実行

変更内容を人間がレビューしてから適用するフローを組み込むことで、インフラ変更の安全性を高められる。

関連